import Vue from 'vue';
import Vuex from 'vuex';

import actions from './actions'
import getters from './getters'
import moduleA from './modules/moduleA'
import mutations from "./mutations";

// 1.注入插件
Vue.use(Vuex);

// 2.创建对象
const state = {
  counter: 1000,
  students: [
    {id: 111, name: '林青霞', age: 18},
    {id: 112, name: '张曼玉', age: 19},
    {id: 113, name: '王祖贤', age: 22},
    {id: 114, name: '钟楚红', age: 24}
  ],
  info: {
    name: 'miranda',
    age: 18,
    height: 1.88
  }
};
const store = new Vuex.Store({
  state: state,
  // 通常情况下，Vuex要求mutations中的方法必须是同步方法，主要的原因是当我们使用devtools时，它可以帮助我们捕捉mutation的快照，如果是异步操作，devtools将不能很好的追踪这个操作什么时候会被完成
  mutations: mutations,
  // actions类似于mutations，它用来代替mutations进行异步操作的
  actions: actions,
  getters: getters,
  modules: {
    a: moduleA
  }
});

// 3.导出
export default store;
